/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package cz.muni.fi.veles.maps;

import cz.muni.fi.veles.MapServer;
import org.richfaces.cdk.annotations.Attribute;
import org.richfaces.cdk.annotations.Description;
import org.richfaces.cdk.annotations.JsfComponent;
import org.richfaces.cdk.annotations.JsfRenderer;

/**
 * Implementation of map for Google Maps server
 * @author Jan Ferko
 */
@JsfComponent(family=AbstractMap.COMPONENT_FAMILY,
    type=GoogleMap.COMPONENT_TYPE,
    description=@Description(displayName="gmap"),
    renderer=@JsfRenderer(family=AbstractMap.COMPONENT_FAMILY, type="cz.muni.fi.veles.GoogleMapRenderer"))
public abstract class GoogleMap extends AbstractMap{

    public static final String COMPONENT_TYPE = "cz.muni.fi.veles.GoogleMap";

    /**
     * Default value: {@code true}
     * @return indicator if pan control is enabled
     */
    @Attribute(defaultValue="true")
    public abstract boolean isPanControl();

    /**
     * Default value: {@code true}
     * @return indicator if zoom control is enabled
     */
    @Attribute(defaultValue="true")
    public abstract boolean isZoomControl();

    /**
     * Default value: {@code true}
     * @return indicator if map type control is enabled
     */
    @Attribute(defaultValue="true")
    public abstract boolean isMapTypeControl();

    /**
     * Default value: {@code false}
     * @return indicator if scalebar is enabled
     */
    @Attribute(defaultValue="false")
    public abstract boolean isScaleControl();

    /**
     * 
     * @return {@link MapServer#GOOGLE}
     */
    @Override
    public final MapServer getMapServer(){
        return MapServer.GOOGLE;
    }
}
